package com.wrox;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionMessage;

import com.wrox.locator.DataSourceLocator;
import com.wrox.locator.ServiceConstant;

public class AddEmployeeAction extends Action {


  public ActionForward execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws IOException, ServletException {

    // Default target to success
    String target = new String("success");

    if ( isCancelled(request) ) {

      // Cancel pressed back to employee list
      return (mapping.findForward("success"));
    }

    try {
    	System.out.println("test");

      Employee employee = new Employee();
      EmployeeForm employeeForm = (EmployeeForm) form;

			employee.setUsername(employeeForm.getUsername());
			employee.setPassword(employeeForm.getPassword());
			Role role = new Role();
			role.setRoleID(new Integer(employeeForm.getRoleid()));
			employee.setRole(role);
			// employee.setRoleid(new Integer(employeeForm.getRoleid()));
			employee.setName(employeeForm.getName());
			employee.setPhone(employeeForm.getPhone());
			employee.setEmail(employeeForm.getEmail());
			Department department = new Department();
			department.setDepID(new Integer(employeeForm.getDepid()));
			employee.setDepartment(department);
			// employee.setDepid(new Integer(employeeForm.getDepid()));

      EmployeeData.addEmployee(employee, DataSourceLocator.getInstance().getDataSources(ServiceConstant.SERVICE_CONSTANT));
    }
    catch ( Exception e ) {

      System.err.println("Setting target to error");
      target = new String("error");
      ActionErrors errors = new ActionErrors();

      errors.add(ActionErrors.GLOBAL_MESSAGE,
        new ActionMessage("errors.database.error", e.getMessage()));

      // Report any errors
      if ( !errors.isEmpty() ) {

        saveErrors(request, errors);
      }
    }
    // Forward to the appropriate View
    return (mapping.findForward(target));
  }
}